interface XXX {
  // fun(m: 1|2|3): void // 函数的形式
  fun: (m: 1 | 2 | 3) => void // 属性的形式（建议使用）
}

// ESLint检查：建议方法签名添加使用属性风格
// '@typescript-eslint/method-signature-style': [
//   'error',
//   'property'
// ]

const obj1: XXX = {
  fun: (m: 1 | 2 | 3 | 4): void => {
    console.log(m)
  }
}

const obj2: XXX = {
  fun: (m: 1 | 2): void => {
    console.log(m)
  }
}

// error
/*const obj3: XXX = {
  fun: (m: string): void => {
    console.log(m)
  }
}*/
